package com.itheima.test;

import com.itheima.domain.Student;

import java.util.ArrayList;
import java.util.Scanner;

public class StudentManger {
    public static void main(String[] args) {

        Scanner sc=new Scanner(System.in);
        //创建学生对象集合
        ArrayList<Student> list= new ArrayList<>();

    sd:while(true){
            System.out.println("-------- 欢迎来到学生管理系统 --------");
        System.out.println("1. 添加学生");
        System.out.println("2. 删除学生");
        System.out.println("3. 修改学生");
        System.out.println("4. 查看学生");
        System.out.println("5. 退出");
        System.out.println("请输入您的选择:");
        String choice =sc.next();

        switch(choice){
            case "1":
                // System.out.println("增加学生");
                addStudent(list);
                break;
            case "2":
               // System.out.println("删除学生");
                deleteStudent(list);
                break;
            case "3":
                //System.out.println("修改学生");
                upDateStudent(list);
                break;
            case "4":
                //System.out.println("查询学生");
                queryStudents(list);
                break;
            case "5":
                //System.out.println("退出");
                break sd;
        }
    }
    }
    //更新学生信息的方法
    public static void upDateStudent(ArrayList<Student> list) {
        //1.给出提示信息
        System.out.println("请输入您要删除的学号");
        //2.键盘接收要要删除的学号
        Scanner sc=new Scanner(System.in);
        String deleteSid=sc.next();
        //3.调用getIndex方法,查找该学号在集合中出现时索引的位置
        int index=getIndex(list,deleteSid);
        //4.根据索引判断,学号在集合中是否存在
        if(index==-1){
            System.out.println("查无信息,请重新输入");
        }else{
            list.remove(index);
            System.out.println("删除成功");
        }
    }
    //删除学生信息的方法
    public static void deleteStudent(ArrayList<Student> list) {
        //1.给出提示信息
        System.out.println("请输入您要删除的学号");
        //2.键盘接收要要删除的学号
        Scanner sc=new Scanner(System.in);
        String deleteSid=sc.next();
        //3.调用getIndex方法,查找该学号在集合中出现时索引的位置
        int index=getIndex(list,deleteSid);
        //4.根据索引判断,学号在集合中是否存在
        if(index==-1){
            System.out.println("查无信息,请重新输入");
        }else{
            list.remove(index);
            System.out.println("删除成功");
        }
    }
    //获得查找学号索引值得方法
    public static int getIndex(ArrayList<Student> list,String sid) {
        //标记位:先假设一种情况
        //1.假设传入的学号,在集合中不存在
        int index=-1;
        //2.遍历集合,获取每一个学生对象,准备进行查找
        for (int i = 0; i <list.size() ; i++) {
            Student stu=list.get(i);
            //3.获取每一个学生对象的学号
            String id=stu.getSid();
            //4.使用获取的学生学号,和传入的学号(要查找的)进行对比
            if(id.equals(sid)){
                index=i;
            }
        }
        return index;
    }
    //查询学生信息的房法
    public static void queryStudents(ArrayList<Student> list) {
    //1.判断集合中是否存在数据,如果不存在直接给出提示
        if(list.size()==0){
            System.out.println("无信息");
            return;
        }
        //2数据存在,展示表头信息
        System.out.println("学号\t\t姓名\t年龄\t生日");
        //3.遍历集合,获取每一个学生对象信息,打印在控制台
        for (int i = 0; i <list.size() ; i++) {
            Student stu=list.get(i);
            System.out.println(stu.getSid()+"\t"+stu.getName()+"\t"+stu.getAge()+"\t\t"+stu.getBirthday());
        }
    }
    //增加学生信息的方法
    public static void addStudent(ArrayList<Student>list) {
        //1.键盘录入学生信息
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入学号:");
        String sid;
        while(true){
            sid =sc.next();

            //校验一下当前学号是否存在
            int index =getIndex(list,sid);
            if (index==-1){
                //不存在:就可以用,不用重复输入学号了
                break;
            }else{
                //存在,不可以用,需要重新录入
                System.out.println("当前学号已被占用,请重新输入");
            }
        }

        System.out.println("请输入姓名:");
        String name =sc.next();
        System.out.println("请输入年龄:");
        int age =sc.nextInt();
        System.out.println("请输入出生日期:");
        String birthday =sc.next();

        //2.封装成学生对象
        Student stu =new Student(sid,name,age,birthday);

        //3.将封装好的学生对象添加到集合容器
        list.add(stu);

        //4.给添加成功的信息
        System.out.println("添加成功");


    }
}
